polish(skill): 优化 nexusx-4phase skill 文档结构与模板完整性#94
Open
allmonday wants to merge 9 commits into
Open
Conversation
spec / clarify (5 决策) / plan / research / data-model / contracts / quickstart / tasks (38 项) / checklists (requirements + documentation) / baseline / vv-result。文档自洽性、模板完整性、决策引导清晰三个维度。
- SKILL.md:删除非法 argument-hint 字段;新增 ## 适用版本 (nexusx >= 3.2) 与 ## 调用约定;spec/phase0.md 单数路径修正 - phases/phase1~4.md:所有 spec/phaseN.md 单数路径统一为 specs/<编号>-<需求简述>/phaseN.md;移除散落的"3.0 起 / 3.2+"版本门槛, 改为引用 SKILL.md 适用版本 - phase4.md:补 OpenAPI 端点实测 V 升验收项 - spec-management.md:新增 ## 语言要求 (FR-008) 与 ## 从旧结构迁移 (FR-009, 含 spec 编号保留规则与跳过 Phase 0 的判定标准)
- service/user/{dtos,service,spec}.py:补齐与 sprint/task 对等的文件结构,
UserService 含 list_users + create_user;UserSummary 作为单一来源被
task/dtos.py 引用(消除重复定义)
- task/dtos.py:UserSummary 改为从 user/dtos 引用
- 删除 service/<domain>/test.py 空占位与 src/router/ 残留目录
- 新增 tests/ 目录:conftest.py (in-memory sqlite + monkey-patch 各
methods 模块的 async_session) + 三个 service 测试共 10 cases
- main.py:默认仅 REST + UseCase MCP + Voyager + GraphQL HTTP;
JSON-RPC / CLI 注释化;base 实体层 MCP (create_mcp_server) 加层级
注释;注册 UserService 到 use_case_config 与 voyager
- pyproject.toml:新增 persist / persist-pg / persist-mysql optional 组
验证:uv sync --all-extras && uvicorn 启动 4 端点 200;pytest 10/10 通过
T029-T034 全 6 组检查结果:3 完全 PASS、2 PARTIAL(依赖 US2/US4)、 1 需人工评测(T035 SC-001/SC-004)。3 commit 检查点已落地。
- 新增 phases/phase0.md(240 行):从 SKILL.md 整体迁出 Phase 0 内容 (Step 0-1~0-8),按二级标题分节;含 FR-012 双向引用 spec-management.md 的"老用户迭代"章节;Step 0-3 内联虚拟实体 10 行摘要(FR-011) - SKILL.md 瘦身 330 → 142 行:删除内联 Phase 0(200+ 行);阶段导航段 改为外链 phases/phase0~4.md;ASCII 框图 spec/<phase>.md 改为 phaseN.md 简写 + 注释完整路径;项目结构段去掉 service/<domain>/test.py,加 tests/ - spec-management.md 已有的"从旧结构迁移"和"跳过 Phase 0 判定标准" 反向引用 phase0.md(双向闭环)
- UseCase 出口形态段重组为「推荐默认组合」(4 个:MCP / REST / Voyager / GraphQL HTTP)+「可选扩展」(2 个:JSON-RPC / CLI)+「决策引导」一段, 让用户 1 分钟能选定组合(FR-005) - 新增「UseCase MCP 版本演进」内联摘要(FR-011):当前推荐 / 已移除 / 3 步迁移 / 拒绝内省 / 延伸阅读 - 扩展「跨层数据流」内联摘要(4 → 15 行):ExposeAs / SendTo / Collector 各自典型场景 + 与 ORM Relationship 区别 + 何时用
直接写 ["persist", ...] 会被解析为 PyPI 包 persist(zope-interface 持久化库), 导致 uv sync --extra persist-pg 装到 PyPI persist + asyncpg 但跳过 alembic, 首次 alembic upgrade head 触发 ModuleNotFoundError。 修复:用项目名自引用本地 persist extra —— ["nexusx-template[persist]", ...] verifier 实测复现并确认修复:persist-pg 现装 alembic==1.18.5 + asyncpg==0.31.0, PyPI persist / six / zope-interface / pluggy 全清;pytest 10/10 回归通过。 Code-review finding #1 (CONFIRMED)。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
针对
skill/目录做结构化优化,解决上一轮代码评审识别的 14 处 P0/P1/P2 矛盾与缺口,让 skill 在使用过程中更平滑、对用户指令更友好。spec/→specs/<编号>-*/)、argument-hint非法 frontmatter 字段、模板main.py与 phase3 文档冲突、router/残留目录——全部闭环phases/phase0.md(240 行)承载完整 Step 0-1~0-8;SKILL.md 顶部新增## 适用版本(nexusx >= 3.2)+## 调用约定,让新人 5 分钟可入门service/user/{dtos,service,spec}.py(与 sprint/task 文件结构对等);测试统一迁到tests/test_<domain>_methods.py;UserSummary沉淀为单一来源被 task/dtos 引用## 语言要求(FR-008)与## 从旧结构迁移(FR-009,含 spec 编号保留规则与跳过 Phase 0 判定标准)Changes
Skill 文档(
skill/)SKILL.md:删argument-hint;新增适用版本 + 调用约定 + 阶段导航;Phase 0 整体迁出;项目结构段补tests/;ASCII 框图路径简化phases/phase0.md(新):Step 0-1~0-8 完整外置;Step 0-3 含虚拟实体 10 行内联摘要;末尾「老用户迭代」章节phases/phase1~4.md:路径统一为specs/<编号>-<需求简述>/phaseN.md;移除散落的「3.0 起 / 3.2+」版本门槛phases/phase3.md:出口分级 + 跨层数据流摘要 + UseCase MCP 版本演进摘要spec-management.md:新增## 语言要求+## 从旧结构迁移Skill 模板(
skill/template/)src/service/user/{dtos,service,spec}.py(新):补齐与 sprint/task 对等的文件结构;UserService含list_users+create_usersrc/service/task/dtos.py:UserSummary改为从user/dtos引用(单一来源,消除重复定义)src/main.py:默认仅 REST + UseCase MCP + Voyager + GraphQL HTTP;JSON-RPC / CLI 注释化;base 实体层 MCP(create_mcp_server)加层级注释;注册UserServicetests/(新):conftest.py(in-memory sqlite + monkey-patch session)+ 三 service 测试共 10 casespyproject.toml:新增persist/persist-pg/persist-mysqloptional 组;修复 persist-pg/persist-mysql self-reference(避免被解析为 PyPIpersist包,详见 code-review finding support basic graphql functions #1)src/router/(手写 router 残留)与service/{sprint,task}/test.py(空占位)Spec / Design artifacts
specs/006-skill-template-polish/:spec → clarify (5 决策) → plan → research → data-model → contracts/skill-interface → quickstart → tasks (38 项) → checklists (requirements + documentation) → baseline → vv-result。Test plan
quickstart.md 全 6 组检查:
grep spec/phase仅余 1 处迁移表的合理保留)phases/phase0.md存在(240 行);SKILL.md 含## 适用版本+## 调用约定;散落版本门槛清理(phase1/2/4=0,phase3=1 合理保留)uv sync --all-extras && uvicorn src.main:app启动;/voyager///graphql//openapi.json//api/user_service/list_users全部 HTTP 200pytest tests/→ 10 passed(3 user + 3 sprint + 4 task,覆盖正常 + 边界场景)## 语言要求+## 从旧结构迁移/code-review medium自检:Finding support basic graphql functions #1 CONFIRMED 已修复(
pyproject.tomlself-reference,commit86520ca);verifier 实测uv sync --extra persist-pg现装 alembic 1.18.5 + asyncpg,不再装 PyPIpersist/ zope-interface / sixFinding fix(demo): add missing dependency greenlet to demo group #2 PLAUSIBLE 接受为技术债(conftest 未 patch
er._session_factory/Resolver/graphql_handler;当前 methods 层测试够用,已加注释标记)5 项 REFUTED 记录在 vv-result.md 防止重复发现
请人工验证(自动化无法评测):
phase2.md独立阅读,5 题理解度问题答对 ≥4🤖 Generated with Claude Code